package com.xbongbong.pro.weblist.pojo;

import com.alibaba.fastjson.JSONArray;
import com.xbongbong.paas.constant.PaasConstant;
import com.xbongbong.paas.pojo.ButtonPojo;
import com.xbongbong.paas.field.FieldAttrEntity;
import lombok.Getter;
import lombok.Setter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author haibin.zhang
 * @version v1.0
 * @date 2019/4/26 14:39
 * @since v1.0
 */
@Getter
@Setter
public class ListOptionPackagePojo {
    /**
     * 普通操作栏
     */
    private Boolean needOption0;
    /**
     * 关注
     */
    private Boolean needOption1 ;
    /**
     * 提醒
     */
    private Boolean needOption2;
    /**
     * 拨号
     */
    private Boolean needOption3;
    /**
     * 跟进记录
     */

    private Boolean needOption4;
    /**
     * 待采购或生产合同
     */
    private Boolean needOption5;
    /**
     * 待采购或生产产品
     */
    private Boolean needOption6;
    /**
     * 库存查询产品前面的下拉按钮
     */
    private Boolean needOption7;
    /**
     * 待入库产品
     */
    private Boolean needOption8;
    /**

    /**
     * 待出库产品
     */
    private Boolean needOption9;
    /**
     * 待生产合同
     */
    private Boolean needOption10;
    /**
     * 待生产产品
     */
    private Boolean needOption11;
    /**
     * 库存查询
     */
    private Boolean needOption12;
    /**
     * 预警查询
     */
    private Boolean needOption13;
    /**
     * 保质期查询
     */
    private Boolean needOption14;
    /**
     * 预警超限数量
     */
    private Boolean needOption15;
    /**
     * 是否有账号禁用的权限
     */
    private Boolean needOption16;
    /**
     * 是否跨月
     */
    private Boolean crossMonth;
    /**
     * 上下架
     */
    private Boolean online;
    /**
     * 信用冻结解冻
     */
    private Boolean freeze;
    /**
     * 信用撤销重新生效
     */
    private Boolean revoke;
    /**
     * 对账单
     */
    private Boolean statement;

    /**
     * 生产单完成
     */
    private Boolean productionOrderFinish;
    /**
     * 归档标签
     */
    private String archivedTag;
    /**
     * 退回公海标签
     */
    private String publicTag;
    /**
     * 公海标签map
     */
    private Map<Long,String> publicTagMap;
    /**
     * 转移公海池标签
     */
    private String transferTag;
    /**
     * 转移公海标签map
     */
    private Map<Long,String> transferTagMap;
    /**
     * 关注列表
     */
    private List<Long> focusList = new ArrayList<>();
    /**
     * 跟进列表
     */
    private List<Long> communicateList = new ArrayList<>();
    /**
     * 提醒列表
     */
    private List<Long> pushNotifyList = new ArrayList<>();
    /**
     * 待采购或待生产产品
     */
    private Map<Long,List<WaitContractProductPojo>> waitProductPojoMap;
    /**
     * 待采购或待生产合同
     */
    private Map<Long,WaitContractPojo> waitContractPojoMap;
    /**
     * 待采购或待生产 产品列表 缺货产品下的缺货合同
     */
    private Map<Long,List<Long>> productAndContractIdMap;
    /**
     * 待出入库产品信息
     */
    private Map<Long,List<WaitOutstockProductPojo>> waitOutstockProductMap;
    /**
     * 基本操作栏
     */
    private List<ButtonPojo> optionList;
    /**
     * 发票的红冲金额
     */
    private Map<Long, Double> redTotalMoneyByIdMap;

    /**
     * 工单紧急标签
     */
    private String emergencyTag;


    private String  overdueTag;
    /**
     * 产品多规格
     */
    private Map<Long,JSONArray> productMap;
    /**
     * 产品多规格
     */
    private Map<Long,String> categoryMap;
    /**
     * 库存查询渲染
     */
    private Map<Long,String> productSearchMap;
    /**
     * 库存查询渲染
     */
    private Map<Long,Set<String>> productSearchWarehouseMap;

    /**
     * 销售未出库数量
     */
    private Map<Long,Double> lackStockMap;
    /**
     * 产品表单解释
     */
    private Map<String, FieldAttrEntity> productExplainMap;
    /**
     * 回款及其合同已开发票金额
     */
    private Map<Long,Double> paymentIdInvoiceAmountMap;
    /**
     * 合同剩余可开发票金额
     */
    private Map<Long,Double> contractLeftInvoiceAmountMap;
    /**
     * 活动是否完成
     */
    private Boolean finish;

    public ListOptionPackagePojo() {
        this.needOption0 = true;
        this.needOption1 = false;
        this.needOption2 = false;
        this.needOption3 = false;
        this.needOption4 = false;
        this.needOption5 = false;
        this.needOption6 = false;
        this.needOption7 = false;
        this.needOption8 = false;
        this.needOption9 = false;
        this.needOption10 = false;
        this.needOption11 = false;
        this.needOption12 = false;
        this.needOption13 = false;
        this.needOption14 = false;
        this.needOption15 = false;
        this.needOption16 = false;
        this.crossMonth = false;
        this.online = false;
        this.finish = false;
        this.freeze = false;
        this.revoke = false;
        this.statement = false;
        this.productionOrderFinish = false;
        this.archivedTag = "";
        this.publicTag = "";
        this.publicTagMap = new HashMap<>(PaasConstant.DEFAULT_INITIAL_CAPACITY);
        this.focusList = new ArrayList<>();
        this.communicateList = new ArrayList<>();
        this.pushNotifyList = new ArrayList<>();
        this.waitProductPojoMap = new HashMap<>(PaasConstant.DEFAULT_INITIAL_CAPACITY);
        this.waitContractPojoMap = new HashMap<>(PaasConstant.DEFAULT_INITIAL_CAPACITY);
        this.productAndContractIdMap = new HashMap<>(PaasConstant.DEFAULT_INITIAL_CAPACITY);
        this.waitOutstockProductMap = new HashMap<>(PaasConstant.DEFAULT_INITIAL_CAPACITY);
        this.optionList = new ArrayList<>();
        this.redTotalMoneyByIdMap = new HashMap<>(PaasConstant.DEFAULT_INITIAL_CAPACITY);
        this.productMap = new HashMap<>();
        this.productSearchMap = new HashMap<>();
//        optionList.add(new ButtonPojo(ListOptionTabEnum.VIEW));
//        optionList.add(new ButtonPojo(ListOptionTabEnum.EDIT));
//        optionList.add(new ButtonPojo(ListOptionTabEnum.DEL));
        this.emergencyTag = "";
        this.overdueTag = "";
        this.productExplainMap = new HashMap<>(PaasConstant.DEFAULT_INITIAL_CAPACITY);
    }
}
